#pragma once

#include "cocos2d.h"

/**
 * @brief SolitaireScene - 纸牌接龙游戏场景
 *
 * 这是一个演示场景，包含：
 * - 绿色背景（模拟纸牌桌面）
 * - 标题文字
 * - 简单的卡牌精灵（用彩色矩形代替）
 * - 鼠标点击交互
 *
 * 完整的纸牌游戏逻辑可在此基础上扩展。
 */
class SolitaireScene : public cocos2d::Scene {
public:
    /**
     * @brief 创建场景
     */
    static SolitaireScene* create();

    /**
     * @brief 初始化场景
     */
    virtual bool init() override;

private:
    /**
     * @brief 创建背景
     */
    void createBackground();

    /**
     * @brief 创建标题
     */
    void createTitle();

    /**
     * @brief 创建演示卡牌
     */
    void createDemoCards();

    /**
     * @brief 创建单个卡牌精灵
     * @param x X坐标
     * @param y Y坐标
     * @param color 颜色
     * @param label 标签文字
     */
    cocos2d::Node* createCard(float x, float y, const cocos2d::Color4B& color, const std::string& label);

    /**
     * @brief 设置触摸事件监听
     */
    void setupTouchListener();

    /**
     * @brief 触摸开始回调
     */
    bool onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event);

    /**
     * @brief 触摸移动回调
     */
    void onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event);

    /**
     * @brief 触摸结束回调
     */
    void onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event);

private:
    cocos2d::Node* m_draggedCard;           ///< 当前拖拽的卡牌
    cocos2d::Vec2 m_dragOffset;             ///< 拖拽偏移量
};
